package stock;


import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/*
@Data ： 注在类上，提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor ： 注在类上，提供类的全参构造
@NoArgsConstructor ： 注在类上，提供类的无参构造
@Setter ： 注在属性上，提供 set 方法
@Getter ： 注在属性上，提供 get 方法
@EqualsAndHashCode ： 注在类上，提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j ： 注在类上，提供对应的 Logger 对象，变量名为 log
@NonNull 注解可以标注在方法、字段、参数之上，表示对应的值不能为空；
@Nullable 注解可以标注在方法、字段、参数之上，表示对应的值可以为空；

@SpringBootApplication： 包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。
其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
@Configuration 等同于spring的XML配置文件； 使用Java代码可以检查类型安全。
@EnableAutoConfiguration 自动配置。
@ComponentScan 组件扫描，可自动发现和装配一些Bean。
@Component可配合CommandLineRunner使用，在程序启动后执行一些基础任务。
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@Autowired自动导入。
@PathVariable获取参数。
@JsonBackReference解决嵌套外链问题。
@RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。
 */

@SpringBootApplication
@EnableDiscoveryClient
//@NacosPropertySource(dataId = "test",autoRefreshed = true)
public class CloudStockApplication {
	@Bean
	@LoadBalanced//必须在使用RestTemplate的Bean注解后加上负载均衡注解
	public RestTemplate restTemplate(){
		return  new RestTemplate();
	}

	public static void main(String[] args) {
		Logger logger = LoggerFactory.getLogger(CloudStockApplication.class);

		logger.trace("trace日志");
		logger.debug("debug日志");
		logger.info("info日志");
		logger.warn("warn日志");
		logger.error("error日志");

		//===============nacos直接连接读取配置文件=============
//		try {
//			String serverAddr = "192.168.2.252:8848";
//			String dataId = "test";
//			String group = "DEFAULT_GROUP";
//
//			Properties properties = new Properties();
//			properties.put("serverAddr", serverAddr);
//			properties.put("namespace","c0a50d17-af0e-4b5b-81d1-f68aff51424b");
//			properties.put("username","nacos");
//			properties.put("password","nacos");
//
//			ConfigService configService = NacosFactory.createConfigService(properties);
//			String content = configService.getConfig(dataId,group,5000);
//			System.out.println("Nacos 配置信息读取");
//			System.out.println(content);
//		}catch (NacosException e){
//			System.out.println(e);
//		}
		//===============nacos直接连接读取配置文件=============


		SpringApplication.run(CloudStockApplication.class, args);
	}

}
